Model definition schema

ABSTRACT

A tagged format data schema is disclosed. The schema enables an object-relational model to be specified and decorated with metadata so that a dimensional model can be inferred therefrom. In accordance with one embodiment, based on information specified in the schema, a processing engine is able to autonomously generate a dimensional model.

The present application is a Continuation-in-Part of and claims priorityof U.S. patent application Ser. No. 10/386,633, entitled “AUTOMATICGENERATION OF A DIMENSIONAL MODEL FOR BUSINESS ANALYTICS FROM AN OBJECTMODEL FOR ONLINE TRANSACTIONI PROCESSING”, filed Mar. 12, 2003 now U.S.Pat. No. 7,275,024, the content of which is hereby incorporated byreference in its entirety.

BACKGROUND OF THE INVENTION

The present invention generally deals with a data schema for describingobject-relational model information. More specifically, the presentinvention pertains to a tagged format data schema that enables anobject-relational model to be specified and decorated with metadata sothat a dimensional model can be inferred from therefrom.

When designing software applications involving business transactions,application developers conventionally use a model driven architectureand focus on domain specific knowledge. The model driven architectureoften includes business objects (or business entities) involved in thebusiness transactions, such as business entities corresponding tocustomers, orders and products. These entities are modeled as objectsfollowing the paradigm of object orientation.

Each object encapsulates data and behavior of the business entity. Forexample, a Customer object contains data such as name, address and otherpersonal information for a customer. The Customer object also containsprogramming code, for example, to create a new Customer, modify the dataof an existing Customer and save the Customer to a database.

The object model also enables a description of relationships among thebusiness entities modeled. For example, a number of Order objects can beassociated with a Customer object representing the customer who makesthose orders. This is known as an association relationship. Other typesof relationships can also be described, such as compositions. An Order,for example, can be “composed of” a collection of OrderLines. TheseOrderLines do not exist independently of the Order they belong to. Inthis way, application developers convert the business logic associatedwith their applications to a set of models. Applications are built thatimplement this business logic, often using on-line transactionprocessing (OLTP).

Objects in an object model typically store their data in a relationaldatabase. To satisfy traditional reporting requirements, data isretrieved through the relational database using extraction,transformation and loading (ETL) processes. Data is retrieved, usingthese processes, into a staging area known as a data mart.

Currently, there is a knowledge gap between users who work on data martsand those who perform OLTP application development. Those who work ondata marts do not normally have knowledge about how the object model isconstructed. Therefore, when the data is retrieved through the ETLprocesses, the business logic (such as the relationships and classes,etc.) that was built into the object model is lost.

Traditionally, therefore, in order to facilitate user's reportingrequirements, another model known as a dimensional model is built fromthe data in the data mart. The dimensional model includes a Fact table,that has measures, and associated tables, that are referred to asdimensions. Once the dimensional model is built, a user can specify aquery against the dimensional model to obtain data in a somewhat logicalfashion, even through the business logic built into the object model waslost.

This type of system, however, requires that a great deal of time bespent in reconstructing the business logic (or at least part of thebusiness logic) to obtain the dimensional model. This can requirecompanies that use such systems to maintain two groups of programmers,one to develop the business logic and implement it in an object model,and another to support the reporting structure required by the company.Of course, this duplication of personnel is both costly and inefficient.

SUMMARY OF THE INVENTION

The present invention generally deals with a data schema. Specificembodiments pertain to a tagged format data schema that enables anobject-relational model to be specified and decorated with metadata sothat a dimensional model can be inferred therefrom. In accordance withone embodiment, based on information specified in the schema, aprocessing engine is able to autonomously generate a dimensional model.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is one exemplary embodiment of an environment in which thepresent invention can be used.

FIG. 2 illustrates a prior art system for implementing business logicand a reporting structure.

FIG. 3 is an example of a dimensional model illustrating a foreign keyrelationship.

FIG. 4A is a block diagram of one embodiment of the present invention.

FIG. 4B is an example of an object model description in the form of aUML class diagram in accordance with one embodiment of the presentinvention.

FIG. 4C is a more detailed block diagram of the system shown in FIG. 4A.

FIG. 5 is a more detailed block diagram of a model services component inaccordance with one embodiment of the present invention.

FIG. 6A is a flow diagram better illustrating the operation of the modelservices component shown in FIG. 5.

FIG. 6B is a more complex example of an object model description in theform of a UML class diagram.

FIG. 7 is a flow diagram illustrating the creation of a dimensionalmodel in accordance with one embodiment of the present invention.

FIG. 8 is one embodiment of a class diagram for a generalized form of amulti-dimensional model.

FIG. 9 is a specific example of a dimensional model in accordance withone embodiment of the present invention.

FIG. 10 illustrates one embodiment of an example query to a dimensionalmodel and corresponding result set.

FIG. 11A is a block diagram of a system for creating a business entityand generating reports in accordance with one embodiment of the presentinvention.

FIG. 11B is a flow diagram illustrating the creation of a businessintelligence entity in accordance with one embodiment of the presentinvention.

FIG. 12 illustrates one exemplary interface implemented by a service togenerate code for accessing a created dimensional model.

FIG. 13 illustrates one exemplary interface for invoking functionalityof a business intelligence entity generator.

FIG. 14 is a flow diagram illustrating how data is retrieved from abusiness entity in accordance with one embodiment of the presentinvention.

FIG. 15 illustrates one exemplary embodiment of an interface to a BIcriteria component.

FIG. 16 illustrates one embodiment of a class diagram for a BI criteriacomponent.

FIG. 17 is an exemplary class diagram of a BI service component.

FIG. 18 illustrates one exemplary result set.

FIG. 19 illustrates a UML diagram that illustrates a particularobject-relational data model.

FIG. 20 illustrates a particular dimensional model that is generatedbased on the UML diagram of FIG. 19.

FIG. 21 is a block diagram illustrating an exemplary architecture.

Appendix A is an example of an XML focal point specification file.

Appendix B is an example of a mapping file.

Appendix C is an example of pseudo code illustrating the operation ofthe model services system.

Appendix D illustrates the interfaces supported by components of themodel services system and the business intelligence entity generator.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

Various aspects of the present invention deal with a data schema thatenables an object-relational model to be specified and decorated withmetadata so that a dimensional model can be inferred therefrom. However,prior to describing the present invention in greater detail, oneembodiment of an illustrative environment in which the present inventioncan be used will be described.

FIG. 1 illustrates an example of a suitable computing system environment100 on which the invention may be implemented. The computing systemenvironment 100 is only one example of a suitable computing environmentand is not intended to suggest any limitation as to the scope of use orfunctionality of the invention. Neither should the computing environment100 be interpreted as having any dependency or requirement relating toany one or combination of components illustrated in the exemplaryoperating environment 100.

The invention is operational with numerous other general purpose orspecial purpose computing system environments or configurations.Examples of well known computing systems, environments, and/orconfigurations that may be suitable for use with the invention include,but are not limited to, personal computers, server computers, hand-heldor laptop devices, multiprocessor systems, microprocessor-based systems,set top boxes, programmable consumer electronics, network PCs,minicomputers, mainframe computers, distributed computing environmentsthat include any of the above systems or devices, and the like.

The invention may be described in the general context ofcomputer-executable instructions, such as program modules, beingexecuted by a computer. Generally, program modules include routines,programs, objects, components, data structures, etc. that performparticular tasks or implement particular abstract data types. Theinvention may also be practiced in distributed computing environmentswhere tasks are performed by remote processing devices that are linkedthrough a communications network. In a distributed computingenvironment, program modules may be located in both local and remotecomputer storage media including memory storage devices.

With reference to FIG. 1, an exemplary system for implementing theinvention includes a general purpose computing device in the form of acomputer 110. Components of computer 110 may include, but are notlimited to, a processing unit 120, a system memory 130, and a system bus121 that couples various system components including the system memoryto the processing unit 120. The system bus 121 may be any of severaltypes of bus structures including a memory bus or memory controller, aperipheral bus, and a local bus using any of a variety of busarchitectures. By way of example, and not limitation, such architecturesinclude Industry Standard Architecture (ISA) bus, Micro ChannelArchitecture (MCA) bus, Enhanced ISA (EISA) bus, Video ElectronicsStandards Association (VESA) local bus, and Peripheral ComponentInterconnect (PCI) bus also known as Mezzanine bus.

Computer 110 typically includes a variety of computer readable media.Computer readable media can be any available media that can be accessedby computer 110 and includes both volatile and nonvolatile media,removable and non-removable media. By way of example, and notlimitation, computer readable media may comprise computer storage mediaand communication media. Computer storage media includes both volatileand nonvolatile, removable and non-removable media implemented in anymethod or technology for storage of information such as computerreadable instructions, data structures, program modules or other data.Computer storage media includes, but is not limited to, RAM, ROM,EEPROM, flash memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical disk storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices.Communication media typically embodies computer readable instructions,data structures, program modules or other data in a modulated datasignal such as a carrier wave or other transport mechanism and includesany information delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media includes wired media such as awired network or direct-wired connection, and wireless media such asacoustic, RF, infrared and other wireless media.

The system memory 130 includes computer storage media in the form ofvolatile and/or nonvolatile memory such as read only memory (ROM) 131and random access memory (RAM) 132. A basic input/output system 133(BIOS), containing the basic routines that help to transfer informationbetween elements within computer 110, such as during start-up, istypically stored in ROM 131. RAM 132 typically contains data and/orprogram modules that are immediately accessible to and/or presentlybeing operated on by processing unit 120. By way of example, and notlimitation, FIG. 1 illustrates operating system 134, applicationprograms 135, other program modules 136, and program data 137.

The computer 110 may also include other removable/non-removablevolatile/nonvolatile computer storage media. By way of example only,FIG. 1 illustrates a hard disk drive 141 that reads from or writes tonon-removable, nonvolatile magnetic media, a magnetic disk drive 151that reads from or writes to a removable, nonvolatile magnetic disk 152,and an optical disk drive 155 that reads from or writes to a removable,nonvolatile optical disk 156 such as a CD ROM or other optical media.Other removable/non-removable, volatile/nonvolatile computer storagemedia that can be used in the exemplary operating environment include,but are not limited to, magnetic tape cassettes, flash memory cards,digital versatile disks, digital video tape, solid state RAM, solidstate ROM, and the like. The hard disk drive 141 is typically connectedto the system bus 121 through a non-removable memory interface such asinterface 140, and magnetic disk drive 151 and optical disk drive 155are typically connected to the system bus 121 by a removable memoryinterface, such as interface 150.

The drives and their associated computer storage media discussed aboveand illustrated in FIG. 1, provide storage of computer readableinstructions, data structures, program modules and other data for thecomputer 110. In FIG. 1, for example, hard disk drive 141 is illustratedas storing operating system 144, application programs 145, other programmodules 146, and program data 147. Note that these components can eitherbe the same as or different from operating system 134, applicationprograms 135, other program modules 136, and program data 137. Operatingsystem 144, application programs 145, other program modules 146, andprogram data 147 are given different numbers here to illustrate that, ata minimum, they are different copies.

A user may enter commands and information into the computer 110 throughinput devices such as a keyboard 162, a microphone 163, and a pointingdevice 161, such as a mouse, trackball or touch pad. Other input devices(not shown) may include a joystick, game pad, satellite dish, scanner,or the like. These and other input devices are often connected to theprocessing unit 120 through a user input interface 160 that is coupledto the system bus, but may be connected by other interface and busstructures, such as a parallel port, game port or a universal serial bus(USB). A monitor 191 or other type of display device is also connectedto the system bus 121 via an interface, such as a video interface 190.In addition to the monitor, computers may also include other peripheraloutput devices such as speakers 197 and printer 196, which may beconnected through an output peripheral interface 195.

The computer 110 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer180. The remote computer 180 may be a personal computer, a hand-helddevice, a server, a router, a network PC, a peer device or other commonnetwork node, and typically includes many or all of the elementsdescribed above relative to the computer 110. The logical connectionsdepicted in FIG. 1 include a local area network (LAN) 171 and a widearea network (WAN) 173, but may also include other networks. Suchnetworking environments are commonplace in offices, enterprise-widecomputer networks, intranets and the Internet.

When used in a LAN networking environment, the computer 110 is connectedto the LAN 171 through a network interface or adapter 170. When used ina WAN networking environment, the computer 110 typically includes amodem 172 or other means for establishing communications over the WAN173, such as the Internet. The modem 172, which may be internal orexternal, may be connected to the system bus 121 via the user inputinterface 160, or other appropriate mechanism. In a networkedenvironment, program modules depicted relative to the computer 110, orportions thereof, may be stored in the remote memory storage device. Byway of example, and not limitation, FIG. 1 illustrates remoteapplication programs 185 as residing on remote computer 180. It will beappreciated that the network connections shown are exemplary and othermeans of establishing a communications link between the computers may beused.

FIG. 2 is a block diagram illustrating data processing in accordancewith the prior art. FIG. 2 illustrates that an application developer hasimplemented business logic used by an application by developing objectmodel 200. As shown in FIG. 2, object model 200 includes a plurality ofdifferent business entities, including a Customer entity 202, an Orderentity 204 and an OrderLine entity 206. The object model 200 usesnotation which is commonly known as unified modeling language (UML). Thenotation shows a composition relationship between Order 204 andOrderLine 206. Thus, it indicates that the Order entity 204 is composedof one or more OrderLine entities 206. Object model 200 also shows thatOrder 204 has an association with Customer 200.

In prior systems, in order to support a desired reporting structure,data was first retrieved from a persistent data store (such as arelational database) 201 using extraction, transformation, and loading(ETL) processes and placed in a data mart 208 which acted as a stagingarea for the data prior to retrieving it.

Then, developers supporting the reporting structure for the usergenerated a dimensional model, such as model 210. The dimensional modeltypically includes a Fact table 212 which has measures noted therein.The Fact table 210 also has a plurality of dimensions illustrated asD1-D5 in FIG. 2. The dimensional model 210 was typically created basedon the particular features in the data that the user desired to reporton and analyze. Thus, some of the business logic implemented in objectmodel 200 was recreated in dimensional model 210.

However, typically, the application developers that implement businesslogic through object models are different, and have a differentknowledge base, than those who develop dimensional models. Therefore, agreat deal of time and effort has traditionally been spent inreconstructing at least a part of the business logic implemented throughobject model 200 in obtaining a dimensional model 210 which can be usedfor reporting.

Another difficulty associated with some prior art techniques is thateven to generate reports from dimensional model 210 required the reportgenerator to be familiar with multi-dimensional expressions (MDX). MDXcan be difficult to learn because it has a complex syntax, and it isdifferent than the object oriented expressions required to create andinteract with object model 200. Therefore, even after dimensional model210 was constructed, generating reports has still required personnelwith specialized knowledge, other than that used in object orientedprogramming.

Prior to describing the invention in greater detail, the concept offoreign key relationships will be discussed. FIG. 3 is a simplifieddiagram illustrating the concept of a foreign key relationship. FIG. 3shows that a Fact table 220 includes other tables associated with “time”and “customer” as dimensions. Therefore, Fact table 220 includes aTimeID field 222 and a CustomerID field 224.

The Time table 226 includes a primary key referred to as TimeID in field228. The primary key uniquely identifies a record in the Time table 226.Time table 226 also contains a number of additional fields related totime, such as day, week and month.

Customer table 230 also includes a primary key field that contains aprimary key referred to as CustomerID 232. The primary key of theCustomer table uniquely identifies a record in the Customer table. Ofcourse, the Customer table also includes additional items associatedwith the customer, such as customer name.

Therefore, the primary key in a table is a unique identifier for therecords in that table. However, the TimeID field 222 and CustomerIDfield 224 in Fact table 220 are identifiers which refer to other tables(in this case 226 and 230, respectively). Therefore, the keys containedin fields 222 and 224 in Fact table 220 are foreign keys. Somecomplexity arises with respect to foreign key relationships. Forexample, a table cannot be deleted if its primary key is a foreign keyin another table, without dealing with the foreign key relationship.Otherwise, such a deletion breaks the integrity constraints typicallyimposed on such systems.

FIG. 4A is a simplified block diagram of one embodiment of the presentinvention. FIG. 4A illustrates a model services system 250 that takes,as inputs, a specification of focal points 252, an object description254 and a set of persistent data store mappings 256. System 250 thenproduces a dimensional model 258 based on the inputs. As will bedescribed below in relation to FIGS. 19 and 20, one aspect of thepresent invention pertains to data schema that enables a standardizeddescription of inputs 252, 254 and/or 256. Model service system 250 isillustratively configured to generate dimensional model 258 based oninformation compiled within the organized schema format.

FIG. 4A also illustrates an entity generator 260 that generates a set ofobject (or entities), referred to herein as business intelligenceentities (or BI entities) 262, based on the dimensional model 258.

Focal points 252 represent certain data in the object model that ismarked by the user as being a focal point of analysis. Focal points 252can illustratively be specified in an XML specification file. Oneexample of an XML specification file is shown in Appendix A hereto.

Object description 254 is an input which describes the objectorientation relationships in a set of metadata corresponding to a set ofobjects. This can take the form of, for example, a UML class diagram.One example of a UML class diagram for a plurality of business entities(Customer, Order and OrderLine) is illustrated in FIG. 4B.

Persistent data store mappings 256 map the data referred to by theobject model to the persistent data store, in one illustrativeembodiment the relational database 201 shown in FIG. 2. These areillustratively created by the user in the form of a map file, an exampleof which is found in Appendix B. The map file shown in Appendix B mapsfrom a Customer entity to relational database tables.

Model services system 250 receives inputs 252, 254 and 256 andautomatically generates a dimensional model 258 based on those inputs.In accordance with one embodiment of the present invention, dimensionalmodel 258 is inferred from the inputs supplied by the user, and there isno requirement for a second set of developers to be involved inrecreating the business logic to obtain model 258. In one embodiment,and as will be discussed in greater detail below, model services system250 uses the associations and compositions in the object model specifiedby the object model description 254 to infer foreign key relationshipsin dimensional model 258. System 250 also uses the focal points ofanalysis defined by the user in file 252 and the persistent data storemappings 256 to create dimensional model 258 and access data throughmodel 258. Therefore, one aspect of the invention is simply theautomatic generation of dimensional model 258. In accordance withanother aspect of the present invention, as will be described inrelation to FIGS. 19-21, data provided to system 250 is organized inaccordance with a standardized data schema, such as a standardizedtagged format data schemata (e.g., an XML data schema).

However, even a system which automatically generates dimensional model258 can be improved. For example, obtaining information throughdimensional model 258 still requires the user to know MDX or some sortof dimensional model querying language. Therefore, in accordance withanother embodiment of the present invention, entity generator 260 isprovided. Entity generator 260 creates business intelligence entities262 in the form of objects, from the cubes and dimensions in dimensionalmodel 258. This is also described in greater detail below.

FIG. 4C illustrates the system shown in FIG. 4A, in greater detail. Inthe example illustrated in FIG. 4C, the object model is represented byobject description 254, and the mappings 256 are shown between theobject model representation 254 and the relational databaserepresentation 264 which represents relational database 201. Again, inaccordance with one aspect the present invention that will be describedin relation to FIGS. 19-21, information is provided to model services250 in accordance with a standardized data schema.

FIG. 4C also shows dimensional model 258 in greater detail. Dimensionalmodel 258 includes a Fact table 266 along with a plurality of dimensions268 and 270 (the Customer dimension and the Order dimension). Each ofthe dimensions is formed of one or more tables. It is also worth notingthat Fact table 266 includes the OrderlineID and CustomerID as foreignkey references.

FIG. 4C also illustrates one embodiment of a set of BI entities 262. Inthe example shown in FIG. 4C, the BI entities 262 include a BIOrderFactentity 270, a BIOrder entity 272 and a BICustomer entity 274. Entities272 and 274 are related to entity 270.

By looking at the entities and their relationships in object modeldescription 254, it can be seen that the dimensional model will requirea snowflake-schema, such as that shown in dimensional modelrepresentation 258. It can thus be inferred that two dimensions will becreated, Order and Customer. The Order dimension will have two levels,Order and OrderLine. The measures (or numeric values) in the Fact table266 will include UnitPrice and Quantity and will come from the OrderLineentities.

FIG. 5 is a more detailed block diagram of model services system 250.FIG. 6A is a flow diagram better illustrating the operation of system250 shown in FIG. 5. FIGS. 5 and 6A will be described in conjunctionwith one another. FIG. 5 shows that model services system 250 includes amodel service component 300, a map system 302 and a dimensional modelconstruction system 304. Map system 302, in turn, includes entityrelation (ER) mapper 306, map loader 308, and map walker 310.Dimensional model construction system 304 includes model generator 312,model materializer 314 and model processor 316. FIG. 5 also illustratesentity generator 260 and BI entities 262.

Model services component 300 provides a main user interface to acceptfocal point specification 252, object description 254 and ER mappings256. As will be described in relation to FIGS. 19-21, in accordance withone aspect of the present invention, information (e.g., informationitems 252, 254 and 256) is provided to model service 300 in accordancewith an organized data schema. The schema is illustratively configuredto facilitate an automated process of constructing a dimensional model.

Model services component 300 can also invoke the functionalityassociated with map system 302, dimensional model construction system304 and entity generator 260. Thus, as a first step in the conversionprocess, model services system 250 receives, through the top levelinterface implemented by component 300, focal point specification 252,object description 254 and persistent data storage mappings 256. This isindicated by block 320 in FIG. 6A.

For the sake of the present example, a more detailed object descriptionthan that shown in FIG. 4B is warranted. Therefore, assume for the sakeof the present description that model services system 250 receives, asthe object description, the UML class diagram shown in FIG. 6B. It issimilar to that shown in FIG. 4B, except that it is slightly morecomplex and includes a bit more detail.

Model services component 300 provides these inputs to map system 302 andinvokes certain functionality in map system 302. Using the ER mapper,the user produces serialized ER maps 256 to described how the objectmodel is mapped to the relational database. These serialized maps 322are then loaded by map loader 308. Map loader 308 deserializes thosemaps and converts them to entity map (EM) objects 324. The precise formof EM objects 324 is not important. They are simply objects generatedfrom the serialized maps 322 that are predefined such that the structureof EM objects 324 is known by map walker 310. Loading maps 322 andcreating EM objects 324 is indicated by block 323 in FIG. 6A.

Map walker 310 navigates EM objects 324 and generates a data set schemato represent tables and columns that the entities are mapped to in therelational database, and to represent the relationship among them.Navigating the EM objects to create data set schema 326 is indicated byblock 325 in FIG. 6A. The data set schema 326 generated by map walker340 forms the basis for constructing a dimensional model cube in thedimensional model. Map walker 310 can also fill in any additionalinformation in the data set schema 326 required by the dimensionalmodel. In addition, map walker 310 generates queries 328 to tables inthe relational database that will be used to define Fact tables in thedimensional models. Schema 326 is then provided to dimensional modelconstruction system 304. In particular, model generator 312 buildsdimensional model cubes based on schema 326. Building the dimensionalmodel cubes from data set schema 326 is illustrated by block 330 in FIG.6A and is described in greater detail below with respect to FIG. 7.

Model materializer 314 provides an interface to materialize thedimensional models generated by model generator 312. Materializing thedimensional models is indicated by block 332 in FIG. 6A. Model processor316 provides an interface to process the models materialized by modelmaterializer 314. It should be noted that, at this point, thedimensional model can be queried using MDX or any other language used toquery a multi-dimensional model. However, in accordance with a furtherembodiment of the present invention, entity generator 260 is invoked bysystem 250 to generate BI entities 262 from the dimensional modelcreated. Creating BI entities from the dimensional model objects isillustrated by block 334 in FIG. 6A and is described in greater detailbelow with respect to FIGS. 10A-10B.

FIG. 7 is a flow diagram better illustrating the creation of adimensional model from an object model using the map walker 310 anddimensional model construction system 304 shown in FIG. 5. From the ERmappings associated with each entity in the object model described, therelational database tables involved with those entities are retrieved.This is indicated by block 400 in FIG. 7. For each table retrieved, atable object is created. The table object has fields which include allof the columns associated with the table. This is indicated by block 402in FIG. 7.

Foreign key relationships among the table and column objects created areprojected based on the associations and compositions among objectsdescribed in the object model description (such as the UML classdiagram) being processed. The map walker 310 then traverses foreign keyrelationships from each table object created, for a corresponding entitythat has been marked as a focal point for analysis. Recall that thefocal points are specified by a focal point specification file which hasalso been input by the user. The foreign key relationships are traversedin a many-to-one direction toward table objects whose correspondingentity has been marked as a focal point for analysis, in order togenerate a named query. The named query can be synthesized by combiningthe identified tables using an appropriate persistent data store querystatement (such as a structured query language (SQL) statement). Thus,the named query is designed to reach out to other dimensions associatedwith each table object, based on focal points specified by the user.

The named queries are then used to create logical view objects for thedimensional model. This is indicated by block 408. A dimensional modelcube is then built for each logical table object, with other tableobjects linked to it as dimensions. This is indicated by block 410. FIG.8 illustrates one exemplary class diagram for a generalized form of amulti-dimensional object in the dimensional model. FIG. 9 illustratesone exemplary dimensional model materialized and illustrating theforeign key relationships between the Fact table and the variousdimensions associated with it.

Appendix C illustrates another embodiment of pseudo code illustratinghow model services system 250 calls the various components thereof inorder to implement the functionalities discussed.

It should be noted, at this point, that the dimensional model, anexample of which is shown in FIG. 9, has been automatically generated byinferring foreign key relationships from the structure (compositions andassociations) in the object model. The user can query the automaticallygenerated dimensional model using tools designed for that purpose. Asdiscussed above, MDX is a language designed to query a dimensionaldatabase.

An exemplary query for querying the dimensional model illustrated byFIG. 9 is shown in FIG. 10. FIG. 10 shows a screen shot having a queryfield 430 which contains an MDX query expression. FIG. 10 also includesa result field 432 which contains the results returned by the query.

As also indicated above, MDX and other dimensional model queryinglanguages can have fairly complex syntax or be otherwise difficult tolearn. Therefore, another embodiment of the present invention convertsthe automatically created dimensional model into another set of objectsreferred to herein as BI entities 262 so that they can be queried byusers using object oriented expressions, rather than the complicatedsyntactical expressions required by dimensional model queryinglanguages. To satisfy the reporting requirements of the client it is notenough to query the original object model, because the dimensional modelmay have a Fact table which has attributes from two different entitiesin the object model as dimensions thereof. Therefore, in order to makeit easier to access the dimensional model, in accordance with oneembodiment of the present invention, BI entities 262 are created.

BI entities 262 provide a conventional object oriented view of theunderlying dimensional model 258. A user can thus create efficient querycriteria and consume dimensional data in a manner in which the actualquerying of the dimensional model is performed transparently to theuser. BI entities 262 hide the dimensional model details, such as thecube, the dimensions, the hierarchy, the native query language, etc.,and the user is only required to use objects and attributes.

FIG. 11A illustrates entity generator 258, along with data access system500 which, itself, includes a BI service component 502, a BI criteriacomponent 504 and a BI metadata discovery component 506. FIG. 11B is aflow diagram better illustrating how entity generator 258 generates BIentities 262.

In order to generate BI entities 262, recall that entity generator 260has access to underlying dimensional model 258. Entity generator 260first retrieves a Fact table from dimensional model 258. This isindicated by block 510 in FIG. 11B. Entity generator 260 then generatesa primary BI entity for the Fact table retrieved. The numerical values(or measures) in the Fact table become the properties of the newlycreated BI entity. Generating a primary BI entity for the retrieved Facttable is indicated by block 512 in FIG. 11B.

Entity generator 260 then generates a non-primary BI entity for eachdimension of the Fact table. It should be noted that nested classes canbe used to maintain the original structure, hierarchy, and levels of thedimensional model. Generating the non-primary BI entities is indicatedby block 514 in FIG. 11B. Entity generator 260 performs these operationsfor each Fact table in dimensional model 258, as indicated by block 516.

FIG. 12 illustrates one exemplary interface implemented by the modelservice to generate code for accessing a created dimensional model. Theinterface allows the model service to convey information on thestructure of the dimensional model to the code generator. A dimensionalmodel consists of a cube with measures and a number of dimensions withhierarchies and attributes. FIG. 12 shows the relationships among thesecomponents of the dimensional model. The interface for invoking entitygenerator 260 is illustrated in FIG. 13. Appendix D illustrates theinterfaces supported by the various components of system 250, and byentity generator 260.

FIG. 14 is a flow diagram better illustrating how data represented by BIentities 262 is accessed using data access system 500. First, a userinput query 520 is provided to data access system 500. Receiving theuser input query is indicated by block 522 in FIG. 14. BI criteriacomponent 504 illustratively provides an interface through which theuser can input user input query 520. The BI criteria interface isillustrated in FIG. 15 and an illustrative class diagram for BI criteriacomponent 504 is illustrated by FIG. 16.

The user input query 520, input through BI criteria 504, is converted byBI service component 502 into a dimensional model query expression, suchas an MDX expression, which can be executed against the dimensionalmodel 258. One exemplary class diagram for BI service component 502 isillustrated in FIG. 17. Translation of the user input query 520 into thedimensional model query and execution of the dimensional model queryagainst the dimensional model are indicated by blocks 524 and 526 inFIG. 14. Of course, MDX is used as an example only, and any of a widevariety of different dimensional model query expressions can besupported by the BI criteria component 504. The following is oneexemplary list of MDX expressions which are supported by BI servicecomponent 502 and BI criteria component 504, although it should beemphasized that other, different, or additional expressions can besupported as well:

MDX set functions supported:

Cross join, children, descendants, ancestors, all members, members,etc.;

MDX member functions supported:

CurrentMember, DefaultMember, FirstChild, LastChild, Lead, Lag, etc . .. ;

MDX numeric functions supported:

Average, Aggregate, count, sum, max, min, median, IIF, etc. . . .

Table 1 lists one exemplary set of MDX operators which are supported.

TABLE 1 Supported Operators Equivalent MDX Operators C# Operators +(Arithmetic) + − (Arithmetic) − * (Arithmetic) * / (Arithmetic) / <(Comparison) < > (Comparison) > <= (Comparison) <= >= (Comparison) >= <>(Comparison) != = (Comparison) == AND (Bitwise) && OR (Bitwise) | | NOT(Bitwise) ! XOR (Bitwise) {circumflex over ( )}

The following illustrates one exemplary criteria definition which formsthe user input query 520 in the C-Sharp programming language.

TABLE 2 //example with arithmetic operation BICriteria crit = newBICriteria ( BICriteria.BIContext ( typeof(SalesBI) ),BICriteria.CalculatedMemberList ( (BIProperty) “SalesBI.AveragePrice”,(BIProperty) “SalesBI.SaleDolloars” / (BIProperty) “BISales.SalesUnits”), BICriteria.AxisList ( Set.AllMembers ( (BIProperty)“ProductBI.DeafultHierachy.Category”), Set.Members ( (BIProperty)“TimeBI.DefaultHierarchy.Quarter”) ), BICriteria.Where ( “StateBI.NorthAmerica.USA.South West.California”) ); //example with logical operatorcrit = new BICriteria ( BICriteria.BIContext ( typeof(SalesBI) ),BICriteria.CalculatedMemberList ( (BIProperty) “SalesBI.profitable”, ((BIProperty) “SalesBI.SalesDollars” > (BIProperty) “SalesBI.Expense”) ),BICriteria.AxisList ( Set.AllMembers ( (BIProperty) “SalesBI”) ) );

After the dimensional model query is executed, BI service component 502then returns a result set as indicated by block 528 in FIG. 14.

Finally, BI metadata discovery component 506 can also be provided. BImetadata discovery component 506 is illustratively provided to perform asystem wide BI entity search and to return detailed metadata retrievedfor one or more BI entities. Of course, this can be useful to the user.

An example of how data is accessed may be helpful. By way of example,assume that a Sales cube in dimensional model 258 has two measures,SalesUnits and SalesDollars, and one dimension “product” which in turnhas only one hierarchy “cat”, which in turn, has one level “category”.The generated BI class codes illustratively looks as follows:

TABLE 3 namespace Microsoft.BusinessFramework.Reporting.BI.Test { usingSystem; using Microsoft.BusinessFramework.Reporting.BIEntity; ///<summary> /// Summary description for SalesBI. /// </summary>[BI(true,“Measures”)] public class SalesBI : IBIEntity { //fieldsprivate Int32 saleUnits; private Double saleDollars; private ProductBIproduct; //constructor public SalesBI( ) {} //properties[BIProperty(BIPropertyType.Measure, “SaleUnits”)] public Int32 SaleUnits{ get { return saleUnits; } set { saleUnits = value; } }[BIProperty(BIPropertyType.Measure, “SaleDollars”)] public DoubleSaleDollars { get { return saleDollars; } set { saleDollars = value; } }[BIProperty(BIPropertyType.Dimension, “product”)] public ProductBIProduct { get { return product; } set { product = value; } } } ///<summary> /// Summary description for ProductBI. /// </summary>[BI(false,“product”)] public class ProductBI : IBIEntity { //fieldsprivate CatHierarchy cat; private CategoryHierarchy category;//constructor public ProductBI( ) {} //properties[BIProperty(BIPropertyType.Hierarchy, “cat”)] public CatHierarchy CAT {get { return cat; } set { cat = value; } }[BIProperty(BIPropertyType.Hierarchy, “category”)] publicCategoryHierarchy Category { get { return category; } set { category =value; } } /// <summary> /// Summary description for CatHierarchy. ///</summary> public class CatHierarchy { //fields private CategoryLevelcategory; //constructor public CatHierarchy( ) {} //properties[BIProperty(BIPropertyType.Level, “category”)] public CategoryLevelCategory { get { return category; } set { category = value; } } ///<summary> /// Summary description for CategoryLevel. /// </summary>public class CategoryLevel { //fields private String @value;//constructor public CategoryLevel(String @value) { this.@value =@value; } //implicit conversion operator public static implicit operatorString (CategoryLevel obj) { return obj.@value; } //properties } } ///<summary> /// Summary description for CategoryHierarchy. /// </summary>public class CategoryHierarchy { //fields private CategoryLevelcategory; //constructor public CategoryHierarchy( ) {} //properties[BIProperty(BIPropertyType.Level, “category”)] public CategoryLevelCategory { get { return category; } set { category = value; } } ///<summary> /// Summary description for CategoryLevel. /// </summary>public class CategoryLevel { //fields private String @value;//constructor public CategoryLevel(String @value) { this.@value =@value; } //implicit conversion operator public static implicit operatorString (CategoryLevel obj) { return obj.@value; } //properties } } } }

One example of a user input query input through BI criteria component504 is as follows:

TABLE 4 BICriteria crit = new BICriteria( BICriteria.BIContext(typeof(Microsoft_EntityTestsBI) ), BICriteria.AxisList( BICriteria.Axis((BIProperty)“Microsoft_EntityTestsBI.FACT_Product_Product_UnitsInStock”,(BIProperty)“Microsoft_EntityTestsBI.FACT_OrderLine_OrderLine_UnitPrice”),BICriteria.Axis(Set.Members((BI Property)“OrderBI”))));

An illustrative and exemplary result set returned based on the userinput query is shown in FIG. 18.

It can thus be seen that the present invention provides a number ofsignificant advantages over prior systems. One aspect of the presentinvention automatically generates a dimensional model from an objectmodel. The automatic generation is performed by inferring thedimensional model from relationships specified in the object model anduser-designated focal points, as well as mappings back to the relationaldatabase. In accordance with one embodiment, the information upon whichthe inference of the dimensional model is based is provided to thegenerator (e.g., the model service generator) in accordance with a anorganized data schema, illustratively a tagged format data schema (e.g.,an XML data schema.

In another embodiment of the present invention, objects are provided toabstract away from the specifics of a dimensional model. Therefore, auser can access a dimensional model using only object orientedexpressions, without requiring specific knowledge of any dimensionalmodel querying language.

Of course, in another embodiment of the present invention, both systemsare used together such that the dimensional model is automaticallycreated from a user-specified object model, and the entities whichabstract away from the dimensional models are automatically created aswell. Thus, all a user must do is provide the focal points, adescription of the object model and its persistent data storagemappings, and this embodiment of the present invention automaticallygenerates the necessary components for the user to access the dataaccording to a desired reporting structure using only object orientedexpressions without going through the laborious tasks of manuallycreating a dimensional model and then generating dimensionalmodel-specific queries against the dimensional model.

In relation to FIG. 4A, it was described that a model services system250 takes, as inputs, a specification of focal points 252, an objectdescription 254 and a set of persistent data store mappings 256. System250 then produces a dimensional model 258 based on the inputs. Inaccordance with one aspect of the present invention, a standardizedmodel definition schema, such as but not limited to a tagged format dataschema, is provided to format the system 250 inputs so as to support theautonomous generation of the dimensional model.

In accordance with one embodiment, the standardized model definitionschema is an XML schema that enables an object-relational model to bespecified and decorated with extra metadata so as to support inferenceof a dimensional model therefrom. In accordance with one embodiment, theschema supports description of any or all of the following dataelements:

-   -   1. Classes in the object orientation paradigm (illustratively        known as entities in the schema) and their data members        (illustratively known as fields in the schema)    -   2. Object-relational mappings that specify how data members of        the classes can be filled with data retrieved from column values        of tables in a relational database    -   3. Key fields (from a class) that uniquely identify an instance        of a class    -   4. A name field in a class that uniquely identifies an instance        of the class and is more understandable than the key fields    -   5. Association and composition relationships among the classes,        including how they are represented by linkages among data        members    -   6. Measures that represent interesting numerical values used for        the generation of the dimensional model.

Based on information organized within the provided standardized schema,a processing engine (e.g., model services system 250) is illustrativelyconfigured to develop (e.g., autonomously generate) a dimensional model.The schema provides a predictable data format to the processing engine.

In accordance with one embodiment, an overview of a model definitionschema designed for the described purpose is expressed using XSD asfollows:

<?xml version=“1.0” encoding=“utf-8” ?> <schemaattributeFormDefault=“unqualified” elementFormDefault=“qualified”targetNamespace=“http://www.mds.microsoft.com”xmlns=“http://www.w3.org/2001/XMLSchema”xmlns:ms=“http://www.mds.microsoft.com”> <element name=“Entities”type=“ms:Entities” /> <complexType name=“Entities”> <sequence> <elementminOccurs=“1” maxOccurs=“unbounded” name=“Entity” type=“ms:Entity”/></sequence> <attribute name=“name” type=“string” use=“required” /><attribute name=“namespace” type=“string” use=“optional” /></complexType> <complexType name=“Entity”> <sequence> <elementminOccurs=“1” maxOccurs=“1” name=“Table” type=“ms:Table” /> <elementminOccurs=“1” maxOccurs=“1” name=“Fields” type=“ms:Fields” /> <elementminOccurs=“0” maxOccurs=“1” name=“Associations” type=“ms:Associations”/> <element minOccurs=“0” maxOccurs=“1” name=“Compositions”type=“ms:Compositions” /> <element minOccurs=“0” maxOccurs=“1”name=“Hierarchies” type=“ms:Hierarchies” /> </sequence> <attributename=“name” type=“string” use=“required” /> <attribute name=“base”type=“string” use=“optional” /> <attribute name=“parent” type=“string”use=“optional” /> </complexType> <complexType name=“Table”> <attributename=“name” type=“string” use=“required” /> <attribute name=“sql”type=“string” use=“optional” /> </complexType> <complexTypename=“Fields”> <sequence> <element minOccurs=“1” maxOccurs=“unbounded”name=“Field” type=“ms:Field” /> </sequence> </complexType> <complexTypename=“Field”> <attribute name=“name” type=“string” use=“required” /><attribute name=“type” type=“string” use=“required” /> <attributename=“column” type=“string” use=“optional” /> <attribute name=“sqltype”type=“string” use=“optional”/> <attribute name=“measure” type=“boolean”use=“optional” /> <attribute name=“keycol” type=“boolean” use=“optional”/> <attribute name=“namecol” type=“boolean” use=“optional” /> <attributename=“timedim” type=“boolean” use=“optional” /> </complexType><complexType name=“Associations”> <sequence> <element minOccurs=“1”maxOccurs=“unbounded” name=“Association” type=“ms:Association” /></sequence> </complexType> <complexType name=“Association”> <sequence><element minOccurs=“1” maxOccurs=“unbounded” name=“FieldRefPairs”type=“ms:FieldRefPairs” /> </sequence> <attribute name=“name”type=“string” use=“required” /> <attribute name=“otherentity”type=“string” use=“required” /> <attribute name=“hierarchical”type=“boolean” use=“optional” /> </complexType> <complexTypename=“FieldRefPairs”> <sequence> <element minOccurs=“1”maxOccurs=“unbounded” name=“FieldRefPair” type=“ms:FieldRefPair” /></sequence> </complexType> <complexType name=“FieldRefPair”> <attributename=“thisfield” type=“string” use=“required” /> <attributename=“otherfield” type=“string” use=“required” /> </complexType><complexType name=“Compositions”> <sequence> <element minOccurs=“1”maxOccurs=“unbounded” name=“Composition” type=“ms:Composition” /></sequence> </complexType> <complexType name=“Composition”> <sequence><element minOccurs=“1” maxOccurs=“unbounded” name=“FieldRefPairs”type=“ms:FieldRefPairs” /> </sequence> <attribute name=“name”type=“string” use=“required” /> <attribute name=“otherentity”type=“string” use=“required” /> </complexType> <complexTypename=“Hierarchies”> <sequence> <element minOccurs=“1”maxOccurs=“unbounded” name=“Hierarchy” type=“ms:Hierarchy” /></sequence> </complexType> <complexType name=“Hierarchy”> <sequence><element minOccurs=“1” maxOccurs=“unbounded” name=“Levels”type=“ms:Levels” /> </sequence> <attribute name=“name” type=“string”use=“required” /> </complexType> <complexType name=“Levels”> <sequence><element minOccurs=“1” maxOccurs=“unbounded” name=“Level”type=“ms:Level” /> </sequence> </complexType> <complexType name=“Level”><attribute name=“number” type=“string” use=“required” /> <attributename=“fieldref” type=“string” use=“required” /> </complexType> </schema>

With regard to the above defined schema embodiment, the root XML tag isthe <Entities> tag. This root tag, similar to most of the tags in theschema, has an attribute called “name”. The name attribute of the<Entities> tag provides a name for the model being defined.

Under the <Entities> tag, one or more <Entity> elements are defined. Aswas mentioned previously, entity is illustratively equivalent to a classin the object orientation paradigm of programming. An entity has a name,a reference to its base (in an inheritance hierarchy) and its parent (ina composition hierarchy). An <Entity> element contains five potentialchild elements (Table, Fields, Associations, Compositions andHierarchies).

The <Table> element specifies primary database table fields that thecontaining <Entity> are mapped to. It can illustratively be either aphysical database table or a logical table defined by the result of aSQL statement.

The <Fields> element is utilized to declare multiple <Field> elementsthat the entity is consisted of. Each <Field> element illustrativelycontains information on how the field is mapped to a database tablecolumn.

The <Associations> element and <Compositions> element declare multiple<Association> elements and <Composition> elements, respectively. Each<Association> element illustratively declares how a set of fields of itsentity is related to a set of fields in another entity in a many-to-onerelationship. Each <Composition> element serves a similar purpose butfor one-to-many relationships.

A<Hierarchy> element under <Hierarchies> declares a semantichierarchical relationship among a subset of fields organized in levels(for example, Country, State, County and Zip Code).

With these overall tags and their described general functions in mind,description will now turn to embodiments pertaining to illustrativedetails for these and other tags, as well as to related attributes.

-Entities-

Description

-   The <Entities> element is the root element of the schema (e.g., the    root element of an XML document). It represents the model being    defined.    Attributes-   name: The name uniquely identifies the model. It is used as the    basis for the name of the cube generated in the dimensional model.-   namespace: This is an optional namespace that is used for code    generated to facilitate data access from the inferred dimensional    model.    Child Elements-   Entity: An <Entities> element consists of multiple <Entity>    elements, each of which specifies an entity defined for the model.    -Entity-    Description-   The <Entity> element specifies an entity of the model. It represents    the concept of a class in the object-orientated programming    paradigm.    Attributes-   name: The name uniquely identifies the entity in the set of entities    in the model. It is used as the basis for the name of the dimension    created for the entity in the dimensional model.-   base: This tag provides the name of the base entity for this entity    within an inheritance hierarchy.-   parent: This tag provides the name of the parent entity of this    entity within a composition hierarchy. The parent entity will have a    composition relationship to this entity.    Child Elements-   Table: This is the primary database table from which the fields of    the entity declared under the <Fields> element will retrieve values.    Refer to the section on the <Table> element for rules governing the    use of the element.-   Fields: This is a list of <Field> elements defined for the entity.    The entity also inherits additional fields from its base entity.    Refer to the section on the <Field> element for the rules governing    the definition and database mapping of inherited fields.-   Associations: This is an optional list of <Association> elements    defined for the entity. The entity may also inherit additional    associations from its base entity. Refer to the section on the    <Association> element for more details.-   Compositions: This is an optional list of <Composition> elements    defined for the entity. The entity may also inherit additional    compositions from its base entity. Refer to the section on the    <Composition> element for more details.-   Hierarchies: This is an optional list of <Hierarchy> elements    defined for the entity. A hierarchy is defined in terms of fields    from the entity. Refer to the section on the <Hierarchy> element for    more details.    -Table-    Description-   This is the logical database table from which the fields of the    entity declared under the <Fields> element retrieve values. The    table can either be a real database table or a virtual table    consisting of data returning from the given SQL query.-   It should be noted that an entity can inherit additional fields from    its base entity which are not declared under this entity's <Fields>    element but under the base entity's <Fields> element. In that case,    those fields will retrieve values from the base entity's <Table>    element if the table name is not an empty string. Otherwise, those    fields will retrieve values from this entity's <Table> element.-   If the same field is declared under the <Fields> elements of both    this entity and its base entity, the definition under this entity    will illustratively override the definition under the base entity.    Also, this makes the field an implicit link between the tables    defined under the two entities. A database join operation on the two    tables using the link is used to retrieve values for the full set of    fields in the derived entity, including those which are inherited    from its base.    Attributes-   name: This is the name of the logical database table from which    fields of the entity declared under the <Fields> element are    retrieving values. If the entity is abstract, which means that its    fields are only mapped by its derived entities, the name of the    table can be an empty string.-   sql: This is the SQL query which defines the data for the entity, if    a physical database table is not named.    Child Elements-   NONE    -Field-    Description-   This declares a field for the entity and also optionally maps the    field to a database column under the table declared for the entity.    Attributes-   name: This is the name of the field. If a field has the same name as    one of the fields declared under a base entity, the definition under    this entity illustratively overrides the definition in the base    entity in terms of the database table mapping. See the “column”    attribute.-   type: This is the data type of the field. The set of data types    allowed is dependent at least on the software platform for which the    model is designed. One exemplary platform to which the present    invention is not limited, is the Microsoft NET platform offered by    Microsoft Corporation of Redmond, Wash.-   column: This is the name of the column in the table to which the    field is mapped. If the same field is also declared in the base    entity, this column mapping illustratively takes precedence over the    column mapping in the base entity. However, the two columns also    provide a link for the two tables under the two entities. The link    is used to construct a join query to obtain a full set of field    values for the derived entity (including those inherited from the    base entity). If the table element for this entity has an empty    string as its name, the column attribute illustratively provides a    default column name for the mapping of this field in all of its    derived entities. As explained, the mapping can be overridden.-   sqltype: This specifies the SQL data type for the column. For    example, char(20), int, money, etc.-   keycol: This is an optional boolean value used to indicate whether    the field is part of the primary key of the entity. Key columns so    declared become the key columns of the dimension constructed in the    dimensional model. The keycol property is inherited alongside the    field by any derived entities.-   namecol: This is an optional boolean value used to indicate whether    the field is the name column of the entity. The name column is used    in the axes of the result set of a query on the dimensional model.    If no namecol is declared, one of the key columns will be used as    the name column.-   measure: This is an optional boolean value used to indicate whether    the field will be used as the point of focus in the construction of    the cube in the dimensional model. The default value is “false”. The    field so declared should be of a numeric type.-   timedim: This is an optional boolean value used to indicate whether    the field will be used to construct a time dimension for measures    declared in the same entity. The default value is “false”. The field    so declared should be of a datetime type.    Child Elements-   NONE    -Association-    Description-   An association links the containing entity with another entity in a    many-to-one relationship. The association is defined in terms of a    collection of FieldRefPair, each of which links a field in the    containing entity with a field in the other entity.    Attributes-   name: This is a name which uniquely identifies an association.-   otherentity: This is a name reference to the other entity with which    the containing entity is related. The entity should be declared in    the same model.-   hierarchical: This is an optional boolean value used to indicate    whether this entity is related to the other entity in a hierarchical    way semantically. Default value is “false”. For example, the    “County” entity is so related to the “State” entity. This forms the    basis of constructing hierarchies in the dimensional model.    Child Elements-   FieldRefPairs: This is a collection of FieldRefPair each of which    relates a field of this entity with a field of the related entity.    See the section under FieldRefPair for more details.    -FieldRefPair-    Description-   This is a reference to a pair of fields useful in the definition of    either an association or a composition relationship. One of the    fields belongs to the entity hosting the definition while the other    belongs to the other entity defined under the relationship. Note    that the references can actually be fields defined under the base    entities of the entities involved.    Attributes-   thisfield: This is a name reference to the field in this entity (or    any of its base entities).-   otherfield: This is a name reference to the field in the other    entity (or any of its base entities) of the containing association    or composition relationship.    Child Elements-   NONE    -Composition-    Description-   A composition links the entity with another entity in a one-to-many    relationship. The composition is defined in terms of a collection of    FieldRefPair, each of which links a field in the containing entity    with a field in the other entity.    Attributes-   name: This is a name which uniquely identifies an composition.-   otherentity: This is a name reference to the other entity with which    the containing entity is related. The entity should be declared in    the same model.    Child Elements-   NONE

-Hierarchy-

Description

-   A hierarchy defines a semantically hierarchical relationship among a    subset of fields defined in this entity.    Attributes-   name: This is a name which uniquely identifies a hierarchy within    the context of an entity. It will be used as a basis for naming the    hierarchy constructed under the dimension built for the entity.    Child Elements-   Levels: This is a list of <Level> elements, each of which references    a field in the containing entity. See the section for the <Level>    element for more details.    -Level-    Description-   This is a level in a hierarchy, which references a field in the    containing entity.    Attributes-   number: This is the level number of the element in its containing    hierarchy. A lower level number field has a lower granularity. For    example, the State field has a lower level number as the County    field.-   fieldref: This is the name reference to a field of the containing    entity which defines the level.    Child Elements-   NONE

With regard to the above-described standardized data schema embodiment,to further describe the nature of the above-described schema tags, aswell as their related attributes and child elements, an exampleobject-relational data model will now be provided. The example model ismade up several distinct entities, namely, SalesDoc, Customer, Order,OrderLine, Product, Supplier and Category. The model includes a basicinheritance scenario, use of hierarchies and hierarchical association,as well as the declaration of a time dimension. The SalesDoc entity isan abstract base entity for the Order entity, which has a compositionrelationship with OrderLine and an association relationship withCustomer. The Category entity has a hierarchical associationrelationship with the Product entity. The field of Order.OrderDate hasbeen tag with the “timedim” attribute so that it will be used as a timedimension. Also, a collection of fields in the Customer and Supplierentities are declared to be part of hierarchies. Both the Freight fieldunder the Order entity and the OrderQuantity field under the OrderLineentity have been marked as a measure.

FIG. 19 illustrates a UML diagram representing the described exampleobject-relational data model.

Organized in a manner consistent with the above-described standardizeddata schema embodiment, the example object-relational data model ischaracterized and formatted as follows:

<?xml version=“1.0” encoding=“utf-8” ?> <Entitiesxmlns=“http://www.mds.microsoft.com” name=“Sales”> <Entityname=“SalesDoc” base=“” parent=“”> <Table name=“”></Table> <Fields><Field name=“SalesDocID” keycol=“true” type=“System.Int32”column=“SalesDocID” sqltype=“int”></Field> <Field name=“CustomerID”type=“System.String” column=“CustomerID” sqltype=“nvarchar(5)”></Field></Fields> <Associations> <Association name=“SalesDoc_Customer”otherentity=“Customer”> <FieldRefPairs> <FieldRefPairthisfield=“CustomerID” otherfield=“CustomerID”/> </FieldRefPairs></Association> </Associations> </Entity> <Entity name=“Order”base=“SalesDoc”> <Table name=“Orders”></Table> <Fields> <Fieldname=“OrderDate” timedim=“true” type=“System.DateTime”column=“OrderDate” sqltype=“datetime”></Field> <Field name=“ShipCity”type=“System.String” column=“ShipCity” sqltype=“nvarchar(15)”></Field><Field name=“ShipRegion” type=“System.String” column=“ShipRegion”sqltype=“nvarchar(15)”></Field> <Field name=“Freight” measure=“true”type=“System.Decimal” column=“Freight” sqltype=“money”></Field></Fields> <Compositions> <Composition name=“Order_OrderLine”otherentity=“OrderLine”> <FieldRefPairs> <FieldRefPairthisfield=“SalesDocID” otherfield=“OrderID”/> </FieldRefPairs></Composition> </Compositions> <Hierarchies> <Hierarchyname=“ShipLocation”> <Levels> <Level number=“1”fieldref=“ShipRegion”></Level> <Level number=“2”fieldref=“ShipCity”></Level> </Levels> </Hierarchy> </Hierarchies></Entity> <Entity name=“OrderLine” base=“” parent=“Order”> <Tablename=“OrderDetails”></Table> <Fields> <Field name=“OrderID”type=“System.Int32” column=“OrderID” sqltype=”int”></Field> <Fieldname=“OrderQuanity” measure=“true” type=“System.Int32” column=“Quantity”sqltype=“smallint”></Field> <Field name=“OrderPrice”type=“System.Decimal” column=“UnitPrice” sqltype=“money”></Field> <Fieldname=“ProductID” type=“System.Int32” column=“ProductID”sqltype=“int”></Field> </Fields> <Associations> <Associationname=“OrderLine_Product” otherentity=“Product”> <FieldRefPairs><FieldRefPair thisfield=“ProductID” otherfield=“ProductID”/></FieldRefPairs> </Association> </Associations> </Entity> <Entityname=“Product” base=“” parent=“”> <Table name=“Products”></Table><Fields> <Field name=“ProductID” keycol=“true” type=“System.Int32”column=“ProductID” sqltype=“int”></Field> <Field name=“ProductName”namecol=“true” type=“System.String” column=“ProductName”sqltype=“nvarchar(40)”></Field> <Field name=“SupplierID”type=“System.Int32” column=“SupplierID” sqltype=“int”></Field> <Fieldname=“CategoryID” type=“System.Int32” column=“CategoryID”sqltype=“int”></Field> </Fields> <Associations> <Associationname=“Product_Supplier” otherentity=“Supplier”> <FieldRefPairs><FieldRefPair thisfield=“SupplierID” otherfield=“SupplierID”/></FieldRefPairs> </Association> <Association name=“Product_Category”otherentity=“Category” hierarchical=“true”> <FieldRefPairs><FieldRefPair thisfield=“CategoryID” otherfield=“CategoryID”/></FieldRefPairs> </Association> </Associations> </Entity> <Entityname=“Category” base=“” parent=“”> <Table name=“Categories”></Table><Fields> <Field name=“CategoryID” keycol=“true” type=“System.Int32”column=“CategoryID” sqltype=“int”></Field> <Field name=“CategoryName”namecol=“true” type=“System.String” column=“CategoryName”sqltype=“nvarchar(15)”></Field> </Fields> </Entity> <Entityname=“Supplier” base=“” parent=“”> <Table name=“Suppliers”></Table><Fields> <Field name=“SupplierID” keycol=“true” type=“System.Int32”column=“ID” sqltype=“int”></Field> <Field name=“SupplierName”namecol=“true” type=“System.String” column=“CompanyName”sqltype=“nvarchar(40)”></Field> <Field name=“SupplierCity”type=“System.String” column=“City” sqltype=“nvarchar(15)”></Field><Field name=“SupplierRegion” type=“System.String” column=“Region”sqltype=“nvarchar(15)”></Field> </Fields> <Hierarchies> <Hierarchyname=“SupplierLocation”> <Levels> <Level number=“1”fieldref=“SupplierRegion”></Level> <Level number=“2”fieldref=“SupplierCity”></Level> <Level number=“3”fieldref=“SupplierName”></Level> </Levels> </Hierarchy> </Hierarchies></Entity> <Entity name=“Customer” base=“” parent=“”> <Tablename=“Customers”></Table> <Fields> <Field name=“CustomerID”keycol=“true” type=“System.String” column=“CustomerID”sqltype=“nvarchar(5)”></Field> <Field name=“CustomerName” namecol=“true”type=“System.String” column=“CompanyName”sqltype=“nvarchar(40)”></Field> <Field name=“CustomerCity”type=“System.String” column=“City” sqltype=“nvarchar(15)”></Field><Field name=“CustomerRegion” type=“System.String” column=“Region”sqltype=“nvarchar(15)”></Field> </Fields> <Hierarchies> <Hierarchyname=“CustomerLocation”> <Levels> <Level number=“1”fieldref=“CustomerRegion”></Level> <Level number=“2”fieldref=“CustomerCity”></Level> <Level number=“3”fieldref=“CustomerName”></Level> </Levels> </Hierarchy> </Hierarchies></Entity> </Entities>

This data organized within the described tagged format data schemaenables its underlying object-relational data model to be specified anddecorated with metadata so that a dimensional model can be inferredtherefrom. In accordance with one embodiment, a processing engineconfigured to support the data schema autonomously generates acorresponding dimensional model.

FIG. 20 illustrates a dimensional model that corresponds to the exampleobject-relational data model, and was illustratively inferred based onthe data organized within the described standardized datarepresentation.

As was described herein, a model services engine processes informationin the form of a model definition schema in order to generate acorresponding dimensional model. It should be emphasized that, inaccordance with one aspect of the present invention, the described modeldefinition schema embodiments are beneficial at least in that theyextensible enough to enable the model service engine to supportdifferent source models and target models.

FIG. 21 is a block diagram illustrating an architecture thatdemonstrates the extensible characteristics of providing the data inputin a format consistent with an embodiment of the described modeldefinition schema.

The adoption of a model definition schema (MDS) as a standard to specifyan object-relational model allows the challenge of generating adimensional model to be divided into two separate tasks. First, inaccordance with one embodiment, as is illustrated in FIG. 21, acomponent identified as a “driver” (e.g., driver 1, driver 2, driver n,etc.) is implemented to pre-translate object relational models of acertain type into MDS format. Next, another component identified as a“translation engine” is implemented to generate a dimensional model fromthe MDS information. Generalizing this architecture, by buildingdifferent drivers and translation engines around the same MDS, and bymixing and matching them if necessary, different source and targetmodels can also be supported.

The extensibility of the MDS system is exemplified in FIG. 21 by thegeneration of models 1, 2 and N based on source models 1, 2 and M,respectively. This generalization implies that the complexity of modeltransformation can be reduced from N (sources)×M(targets) to N+M. Giventhe described extensibility of the MDS system, any party (e.g., a thirdparty vendor) can implement their own drivers and translation engines toconvert one model to the other through the MDS. Accordingly, one canillustratively project transforming a given object model to Oracle OLAPimplementation or transforming Siebel to SQL Analysis Service schema.

Although the present invention has been described with reference toparticular embodiments, workers skilled in the art will recognize thatchanges may be made in form and detail without departing from the spiritand scope of the invention.

1. A data processing system including a processor, the systemcomprising: a standardized data representation that is encoded on acomputer-readable storage medium and that represents anobject-relational data model; a model generator that processes thestandardized data representation and automatically derives, based ondescriptions of objects and an indication of a collection ofobject-relational mappings in the standardized data representation togenerate a dimensional model that corresponds to the object-relationaldata model, the standardized data representation includes: a descriptionof the objects and object relationships reflected in theobject-relational data model; a description of persistent data storemappings associated with the object-relational data model; theindication of a collection of object-relational mappings that specifyhow a data member associated with a class in the object-relational datamodel can be filled with data retrieved from at least one table in arelational database; a description of at least one user-designated focalpoint that represents a point of analysis indicated in association withdata in the object-relational data model; and a description of at leastone data element selected from a group consisting of a class from theobject-relational data model, a data member associated with a class fromthe object-relational data model, a collection of object-relationalmappings that specify how data is retrieved from a relational database,a field that uniquely identifies a class from the object-relational datamodel, an association relationship indicator that identifies arelationship among classes in the object-relational data model, acomposition relationship indicator that identifies a relationship amongclasses in the object-relational data model, and a measure thatidentifies an interesting numerical value used for generation of thedimensional model.
 2. The system of claim 1, wherein the standardizeddata representation is a specification of the object-relational datamodel decorated with metadata so as to support the derivation of thedimensional model.
 3. The system of claim 1, wherein the standardizeddata representation includes a description of at least one focal pointthat represents a point of analysis indicated in association with datain the object-relational data model.
 4. A data processing systemincluding a processor, the system comprising: a tagged format dataschema that is encoded on a computer-readable storage medium and thatrepresents an object-relational data model; a model generator thatprocesses the tagged format data schema and automatically derives, basedon descriptions of objects and an indication of a collection ofobject-relational mappings in the tagged format data schema to generatea dimensional model that corresponds to the object-relational datamodel, the tagged format data schema includes: a description of objectsand object relationships reflected in the object-relational data model;a description of persistent data store mappings associated with theobject-relational data model; the indication of a collection ofobject-relational mappings that specify how a data member associatedwith a class in the object-relational data model can be filled with dataretrieved from at least one table in a relational database; adescription of at least one user-designated focal point that representsa point of analysis indicated in association with data in theobject-relational data model; and a description of at least one dataelement selected from a group consisting of a class from theobject-relational data model, a data member associated with a class fromthe object-relational data model, a collection of object-relationalmappings that specify how data is retrieved from a relational database,a field that uniquely identifies a class from the object-relational datamodel, an association relationship indicator that identifies arelationship among classes in the object-relational data model, acomposition relationship indicator that identifies a relationship amongclasses in the object-relational data model, and a measure thatidentifies an interesting numerical value used for generation of thedimensional model.
 5. The system of claim 4, wherein the schema includesa tag used to indicate a class in the object-relational data model. 6.The system of claim 4, wherein the schema includes a tag for indicatinga data member associated with a class in the object-relational datamodel.
 7. The system of claim 4, wherein the schema includes a tag forindicating a key field that uniquely identifies a class included in theobject-relational data model.
 8. The system of claim 4, wherein theschema includes a tag for indicating a name field that uniquelyidentifies an instance of a class included in the object-relational datamodel.
 9. The system of claim 4, wherein the schema includes a tag forindicating an association relationship among multiple classes in theobject-relational data model.
 10. The system of claim 4, wherein theschema includes a tag for indicating a composition relationship amongmultiple classes in the object-relational data model.
 11. The system ofclaim 4, wherein the schema includes a tag for indicating a measure, ameasure being an interesting numerical value used for generation of thedimensional model.
 12. The system of claim 4, wherein the schema enablesthe object-relational data model to be specified and decorated withmetadata so as to support the derivation of the dimensional model. 13.The system of claim 4, wherein the schema is configured to be processedby a processing engine that is adapted to autonomously derive thedimensional model.
 14. The system of claim 4, wherein the schemaincludes a description of at least one focal point that represents apoint of analysis indicated in association with data in theobject-relational data model.
 15. A data processing system including aprocessor, the system comprising: a Extensible Markup Language (XML)data schema that is encoded on a computer-readable storage medium andthat represents an object-relational data model; a model generator thatprocesses the data schema and automatically derives, based ondescriptions of objects and an indication of a collection ofobject-relational mappings in the data schema to generate a dimensionalmodel that corresponds to the object-relational data model, the dataschema includes: a description of objects and object relationshipsreflected in the object-relational data model; a description ofpersistent data store mappings associated with the object-relationaldata model; a description of at least one user-designated focal pointthat represents a point of analysis indicated in association with datain the object-relational data model; the indication of a collection ofobject-relational mappings that specify how a data member associatedwith a class in the object-relational data model can be filled with dataretrieved from at least one table in a relational database; and adescription of at least one data element selected from a groupconsisting of a class from the object-relational data model, a datamember associated with a class from the object-relational data model, acollection of object-relational mappings that specify how data isretrieved from a relational database, a field that uniquely identifies aclass from the object-relational data model, an association relationshipindicator that identifies a relationship among classes in theobject-relational data model, a composition relationship indicator thatidentifies a relationship among classes in the object-relational datamodel, and a measure that identifies an interesting numerical value usedfor generation of the dimensional model.
 16. The system of claim 15,wherein the schema includes a tag used to indicate a class in theobject-relational data model.
 17. The system of claim 15, wherein theschema includes a tag for indicating a data member associated with aclass in the object-relational data model.
 18. The system of claim 15,wherein the schema includes a tag for indicating a key field thatuniquely identifies a class included in the object-relational datamodel.
 19. The system of claim 15, wherein the schema includes a tag forindicating a name field that uniquely identifies an instance of a classincluded in the object-relational data model.
 20. The system of claim15, wherein the schema includes a tag for indicating an associationrelationship among multiple classes in the object-relational data model.21. The system of claim 15, wherein the schema includes a tag forindicating a composition relationship among multiple classes in theobject-relational data model.
 22. The system of claim 15, wherein theschema includes a tag for indicating a measure, a measure being aninteresting numerical value used for generation of the dimensionalmodel.
 23. The system of claim 15, wherein the schema enables theobject-relational data model to be specified and decorated with metadataso as to support the derivation of the dimensional model.